<?php
echo "<pre>";
print_r($_FILES['file']);
echo "</pre>";

foreach ($_FILES['file'] as $key=>$value){
    foreach ($value as $k=>$v){
        echo $v[$k]."</br>";
    }
}
exit;
if ($_FILES['file']['error'] > 0) {
    echo '上传错误: ';
    switch ($_FILES['file']['error']) {
        case 1:
            echo '上传文件大小超出了PHP配置文件中的约定值：upload_max_filesize';
            break;
        case 2:
            echo '上传文件大小超出了表单中的约定值：MAX_FILE_SIZE';
            break;
        case 3:
            echo '文件只被部分上载';
            break;
        case 4:
            echo '没有上传任何文件';
            break;
    }
    //如果$_FILES['myfile']['error']大于0都是有错误，输出错误信息并退出程序
    exit;
}

//获取上传文件的MIME类型中的主类型和子类型
//    list($maintype, $subtype) = explode("/", $_FILES['file']['type']);
//
//限制为图片，如果用户修改了文件后缀，就判断不出来了
//    if ($maintype != "image") {
//        echo '问题: 只能上传图片。';
//        //如果用户上传文本文件则退出程序
//        exit;
//    }

//安全的判断图片的方法
if (!getimagesize($_FILES['file']['tmp_name'])) {
    echo '问题: 只能上传图片。';
    exit;
}

//截取文件后缀名
$extension = strrchr($_FILES['file']['name'], '.');

//定义上传后的位置和新文件名
$dir = 'uploads/' . date('Y_m_d', time());
if (!is_dir($dir)) {
    //递归建立目录
    mkdir($dir, 0777, true);
}

$upfile = $dir . '/' . time() . '_' . rand(100000, 999999) . $extension;

//判断是否为上传文件
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    //从移动文件
    if (!move_uploaded_file($_FILES['file']['tmp_name'], $upfile)) {
        echo '问题: 不能将文件移动到指定目录。';
        exit;
    }
} else {
    echo '问题: 上传文件不是一个合法文件: ';
    echo $_FILES['file']['name'];
    exit;
}

//如果文件上传成功则输出
echo '文件' . $upfile . '上传成功,大小为' . $_FILES['file']['size'] . '！<br>';